package com.ls.service;

import java.util.List;
import java.util.Map;

/**
 * @author ls
 * @date 2021/1/9
 **/
public interface FollowService {

    /**
     * 关注
     *
     * @param userId
     * @param entityType
     * @param entityId
     */
    void follow(int userId, int entityType, int entityId);

    /**
     * 取关
     *
     * @param userId
     * @param entityType
     * @param entityId
     */
    void unFollow(int userId, int entityType, int entityId);

    /**
     * 查询用户关注的实体数
     *
     * @param userId
     * @param entityType
     * @return
     */
    long getFolloweeCount(int userId, int entityType);

    /**
     * 查询实体粉丝数
     *
     * @param entityType
     * @param entityId
     * @return
     */
    long getFollowerCount(int entityType, int entityId);

    /**
     * 查询当前用户是否已关注该实体
     *
     * @param userId
     * @param entityType
     * @param entityId
     * @return
     */
    boolean hasFollowed(int userId, int entityType, int entityId);


    /**
     * 查询当前用户关注的用户
     *
     * @param userId
     * @param startIndex
     * @param pageSize
     * @return
     */
    List<Map<String, Object>> getFollowees(int userId, int startIndex, int pageSize);

    /**
     * 查询当前用户粉丝
     *
     * @param userId
     * @param startIndex
     * @param pageSize
     * @return
     */
    List<Map<String, Object>> getFollowers(int userId, int startIndex, int pageSize);

}
